package com.sky.service;

import cn.mybatis.mp.core.mybatis.mapper.context.Pager;
import com.sky.dto.UserBanDTO;
import com.sky.dto.UserStatusDTO;
import com.sky.entity.UserBans;
import com.sky.vo.UserBanInfoVO;
import com.sky.dto.UserPageQueryDTO;
import com.sky.vo.UserPageVO;

import java.util.List;

/**
 * 用户封禁服务接口
 * 提供用户封禁相关的功能
 */
public interface UserBanService {
    /**
     * 更新用户状态（封禁/解封）
     *
     * @param userId 用户ID
     * @param banDTO 封禁信息
     */
    void updateUserStatus(Integer userId, UserBanDTO banDTO);

    /**
     * 获取用户封禁状态
     *
     * @param userId 用户ID
     * @return 用户封禁状态信息
     */
    UserStatusDTO getUserBanStatus(Integer userId);

    /**
     * 获取用户封禁历史记录
     *
     * @param userId 用户ID
     * @return 封禁历史记录列表
     */
    List<UserBans> getUserBanHistory(Integer userId);

    /**
     * 获取用户当前封禁信息
     *
     * @param userId 用户ID
     * @return 封禁信息
     */
    UserBanInfoVO getCurrentBanInfo(Integer userId);

    /**
     * 检查用户是否被封禁
     *
     * @param userId 用户ID
     * @return true-已封禁，false-未封禁
     */
    boolean isUserBanned(Integer userId);

    /**
     * 获取用户分页列表（包含封禁信息）
     *
     * @param queryDTO 查询条件，包含：
     *                - username: 用户名（可选）
     *                - email: 邮箱（可选）
     *                - status: 用户状态（可选，0-正常，1-封禁）
     *                - page: 页码
     *                - pageSize: 每页大小
     * @return 用户分页数据，包含封禁信息
     */
    Pager<UserPageVO> getUsersPage(UserPageQueryDTO queryDTO);
} 